我們在第十章節完成了一個簡單的生成模塊,也就是讓 LLM 去生成程式碼的標題與功能描述
今天我們要來打大魔王,如何生成一步驟一步驟的程式碼教學文件
基本上我已經試過好幾種方法了,目前要教學的是我最後實驗出來效果最好的方法
讓 AI 能夠生成這種有大量步驟的教學文件
文件的設計上應該滿足以下目標
每一步驟的教學內容不會過多
每一步驟都在前進,不會原地打轉
不會出現衝突,比如說下一步驟的教學內容直接打臉上個步驟的內容
基本上我的構想就是遞迴
反覆遞迴 LLM 的生成,每一次遞迴都向前一點點,直到完成整份教學
最大的難點就在於如同溝通好每一次的遞迴,能夠逐漸前進、符合目標的生成整份程式碼呢?
我們先從最簡單的地方開始,也就是設計遞迴的起點
如何讓 LLM 生成第一步驟,基本上就是一個什麼都沒有的程式碼基礎
接下來的步驟就會逐漸在這個基礎上頭新增程式碼
讓 AI 生成一個初始程式碼框架,作為程式設計教學的基礎。
此框架應該足夠簡潔,並符合下列條件:
乾淨、簡潔
可執行且無錯誤
不含具體功能或複雜邏輯
僅保留最基本的程式碼元素,如入口點
interface ResultSchema {
code: string
}
設計這個 Prompt 的重點在於:
簡潔性:我們希望最終生成的程式碼不會過於複雜,以確保初學者容易理解。
可執行性:代碼應能夠無錯誤運行,這樣才能讓學習者專注在逐步構建功能上,而不是解決語法或執行問題。
可擴展性:這段初始程式碼將作為未來教學的基礎,因此應該保留靈活的空間,讓後續的步驟可以無縫增加更多功能。
需求定義好以後,直接將整個需求加入進 prompt
並帶入角色扮演
你是一個設計用來幫助教學程式設計的 AI 助理。你的任務是為給定的代碼創建一個乾淨、簡潔的起點。這個起點將作為逐步編程教學的基礎。
你的目標是生成這段代碼的初始框架。這個框架應該具備以下條件:
1. 可執行(應該能夠無錯誤地運行)
2. 盡可能地乾淨和簡潔
3. 不含任何具體的功能
4. 不包含特殊的導入或函數聲明
5. 僅包含作為起點所需的基本元素
按照以下步驟來創建這個初始框架:
1. 確定代碼的基本結構(例如,函數、類或腳本)。
2. 移除所有具體的功能,只保留最基本的結構。
3. 除非是絕對必要的,否則移除所有導入(如果有的話)。
4. 移除所有函數和變量的聲明,只保留主入口點(如果有的話)。
5. 如果有主函數或入口點,保留其聲明,但刪除其內容。
6. 確保生成的代碼在語法上是正確的,並且可以無錯誤執行。
7. 最後,輸出如下的 JSON 格式:
"""
{
"code": "<code>"
}
"""
記住,目標是為初學者提供一個最簡單的起點,讓他們在此基礎上逐步構建並最終完成代碼。
我們的目標是生成一段初始的程式碼框架,這段程式碼應該簡單且可執行,作為程式設計教學的基礎。
目標定義要明確,以便 AI 能夠理解我們的需求,避免生成過於複雜或與教學無關的程式碼。
在我們設計完 Prompt 之後,最好準備一些測試資料來驗證 AI 的生成結果是否符合我們的期望。例如,可以使用以下樣本輸入測試:
輸入代碼:
def calculate_sum(a, b):
return a + b
期望輸出:
{
"code": "def main():\n pass"
}
這樣的輸出符合我們的期望,即提供一個乾淨的起點,只保留主入口點。
接下來,設計逐步生成程式碼的流程。基本上,我們將採用遞迴的方法,讓 AI 每次生成一小段程式碼,並依次向前推進,最終生成整份教學文件。
最後,我們可以用實驗來驗證我們的設計。將 Prompt 應用到不同類型的代碼上,看看生成的初始框架是否符合我們的要求。這個過程需要反覆測試和調整,直到達到理想效果。